оробка переривань в операційній системі MS-DOS

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Системне програмування
Група:
ПІ

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” КАФЕДРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ  Звіт Про виконання лабораторної роботи № 1 з дисципліни «Операційні системи та системне програмування» Тема: оробка переривань в операційній системі MS-DOS Завдання Скласти програму, яка б виводила на екран зміст всіх ненульових векторів переривань. Після виклику програма повинна залишатись резидентною. Вектор переривань, яким ініціалізується програма, підібрати самостійно. Використані типи даних ^word; - для опису вказівників на слово, для того щоб в них вмістити адрес сегмента та зміщення всередині цього сегмента; word, integer - для опису цілих змінних, нап., для лічильників у циклі; string - для запису шістнадцяткових номерів, адрес та зміщень var OldVect: procedure; - для запису адреси стандартного обробника переривань. Алгоритм виконання завдання Після початку роботи програми ми зберігаємо стандартний вектор обробки переривань від клавіатури, та заміняємо його на обробник. Обробник перевіряє яка клавіша була натиснута, і якщо це була F12, то він починає виконувати поставлене завдання, інакше управління передається стандартному обробнику переривання. Для виконання завдання, обробник очищає екран, і отримує адреси всіх переривань, якщо вони не нульові, то виводить їх на екран. Для отримання адреси отримуємо сегмент в якому знаходиться переривання та зміщення всередині сегменту, виходячи з того, що переривання починають розміщуватися з нульової адреси оперативної пам’яті. Після виконання програма залишається резидентною в пам’яті. Блок-схема алгоритму роботи програми Текст програми program lab1; uses dos, crt; var OldVect: procedure; ofset,seg:^word;{pointer to WORD} b:word; {dec to hex} function hex(a:word):string; var b,c:integer; d:string; begin d:=''; for b:=0 to 3 do begin c:=a mod 16; if c>9 then c:=c+39; d:=chr(c+48)+d; a:=a div 16; end; hex:=d; end; {F+} procedure GetAllNotNullVect; interrupt; var i: byte; p: pointer; NLineIndex: byte; begin if Port[$60]=$58 then begin clrscr; {pereburaem vsi pereruvannya} for b:=0 to 255 do begin {get segment} seg:=ptr(0,(b*4)); {get offset} ofset:=ptr(0,(b*4+2)); if (seg^<>0)and(ofset^<>0)then begin textcolor(green); write(' ',hex(b),': '); textcolor(blue); write(hex(seg^),':',hex(ofset^)); end; end; end; OldVect; end; {$F-} {$M $2048, 0, 0} Begin clrscr; GetIntVec($9, @OldVect); SetIntVec($9, @GetAllNotNullVect); Keep(0); readln; readln; End. Результат роботи програми: 
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини